﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using BussinesCosea;
using System.Configuration;
using System.IO;
using System.Data.SqlClient;


public partial class Registro : System.Web.UI.Page
{
    private static AppSettingsReader settings = new AppSettingsReader();    
    string cadena = (string)settings.GetValue("Conexion2", typeof(string));
    private static int folio = 0;
    private static BussinesCosea.SolicitudEmpleo solicitud = new BussinesCosea.SolicitudEmpleo();
    private static BussinesCosea.OrdenServicio ordenSrv = new BussinesCosea.OrdenServicio();
    private static int IidOrden = 0;
    
   
    protected void Page_Load(object sender, EventArgs e)
    {
        if (this.IsPostBack == false)
        {

            folio = int.Parse(this.Request.QueryString["id"]);
            HiddenField1.Value = this.Request.QueryString["id"];
            IidOrden = int.Parse(this.Request.QueryString["orden"]);

            using (BussinesCosea.CoseaDirectos c = new BussinesCosea.CoseaDirectos(cadena))
            {
                solicitud = c.BuscaSolicitudEmpleo(folio);
                ordenSrv = c.ObtenOrdenServicio(IidOrden);
            }
           
            Consulta();
            CargaCombos();
        } 
    }

    private void guardaImagenSolicitud(int idfolio, FileUpload imgUpload, string campo)
    {
        SqlConnection connection = null;
        try
        {
            //(FileUpload)
            FileUpload img = imgUpload;
            Byte[] imgByte = null;
            if (img.HasFile && img.PostedFile != null)
            {
                //To create a PostedFile
                HttpPostedFile File = imgUpload.PostedFile;
                //Create byte Array with file len
                imgByte = new Byte[File.ContentLength];
                //force the control to load data in array
                File.InputStream.Read(imgByte, 0, File.ContentLength);
            }
            
            connection = new SqlConnection(cadena);

            connection.Open();
            string sql = string.Format("update ExpedienteEmpleado set {0} = @foto where IdExpediante = @idexpediente", campo);
            SqlCommand cmd = new SqlCommand(sql, connection);
            cmd.Parameters.AddWithValue("@idexpediente", idfolio);
            cmd.Parameters.AddWithValue("@foto", imgByte);
            int id = Convert.ToInt32(cmd.ExecuteScalar());

        }
        catch (Exception ex)
        {
            Response.Redirect("Error.aspx?error=" + ex.Message);
            //throw new Exception(ex.Message);
        }
        finally
        {
            connection.Close();
        }
    }


    private void guardar()
    {
        Empleado emp = new Empleado();
        Boolean result = false;
        Boolean chequeado = false;
        decimal dValor = 0m;
        result = decimal.TryParse(SalarioDiario.Text, out dValor);
            if (result)
                emp.SalarioDiario = dValor;
            else
                emp.SalarioDiario = 0m;
          
        DateTime ffecha = DateTime.Now;
            result = DateTime.TryParse(fechaIngreso.Text, out ffecha);
            if (result)
                emp.FechaIngreso = ffecha;
            else
                emp.FechaIngreso = DateTime.Now;
            
            emp.DiaDescanso = USis.TStr(10, DiaDescanso.Text);
            emp.Turno = USis.TStr(20, Turno.Text);
            emp.TipoSangre = USis.TStr(10, TipoSangre.Text);
            result = DateTime.TryParse(Mfecha.Text, out ffecha);
            if (result)
                emp.Medico_Fecha = ffecha;
            else
                emp.Medico_Fecha = DateTime.Now;

            emp.TipoContrato = Contrato.Text;
            emp.Medico_A = USis.TStr(20, A.Text);
            emp.Medico_NA = USis.TStr(20, NA.Text);
            emp.Medico_AntiDop = USis.TStr(20, Antidoping.Text);
            emp.Medico_Avod = USis.TStr(20, AVOD.Text);
            emp.Medico_Avoi = USis.TStr(20, AVOI.Text);
            emp.Medico_Observa = USis.TStr(50, Observaciones.Text);
            emp.Medico_Examinado = USis.TStr(20, Examinado.Text);
            emp.Medico_Planta = USis.TStr(20, Mplanta.Text);
            emp.CreditoInfonavit = USis.TStr(2, Infonavit.Text);
            emp.NumeroCreditoInfonavit = USis.TStr(20, NCredito.Text);
            emp.NombeAvisoAccidente = USis.TStr(50, Naccidente.Text);
            emp.TelefonoAvisoAccidente = USis.TStr(50, Taccidente.Text);
            chequeado = Contratado.Checked;
            if (chequeado)
                emp.Contratado = true;
            else
                emp.Contratado = false;
            emp.EmpresaAsignada = USis.TStr(50, Cliente.Text);
            emp.PuestoDepartamento = USis.TStr(50, Puesto.Text);
            emp.PeriodoPago = USis.TStr(20, periodoPago.Text);
            emp.Fotos = Documentacion_0.Checked;
            emp.Domicilio = Documentacion_1.Checked;
            emp.Estudios = Documentacion_2.Checked;
            emp.Ife = Documentacion_3.Checked;
            emp.Imss = Documentacion_4.Checked;
            emp.Acta = Documentacion_5.Checked;
            emp.Recomendacion = Documentacion_6.Checked;
            emp.Policia = Documentacion_7.Checked;
            emp.Curp = Documentacion_8.Checked;
            emp.Comentarios = USis.TStr(50, Comentarios.Text);
            emp.IdPuesto = int.Parse(Puesto.Text);

            string sIdEmpleado = "";
            string sIdExpediente = "";

            using (BussinesCosea.CoseaDirectos c = new BussinesCosea.CoseaDirectos(cadena))
            {
                c.GuardaPreCandidato(emp, ordenSrv, solicitud,ref sIdEmpleado, ref sIdExpediente);
            }

            if (Documentacion_0.Checked)
                guardaImagenSolicitud(int.Parse(sIdExpediente), Ufotos, "Fotos");
            if (Documentacion_1.Checked)
                guardaImagenSolicitud(int.Parse(sIdExpediente), Udomicilio, "Domicilio");
            if (Documentacion_2.Checked)
                guardaImagenSolicitud(int.Parse(sIdExpediente), UEstudios, "Estudios");
            if (Documentacion_3.Checked)
                guardaImagenSolicitud(int.Parse(sIdExpediente), UIFE, "Ife");
            if (Documentacion_4.Checked)
                guardaImagenSolicitud(int.Parse(sIdExpediente), Uimss, "Imss");
            if (Documentacion_5.Checked)
                guardaImagenSolicitud(int.Parse(sIdExpediente), Uacta, "Acta");
            if (Documentacion_6.Checked)
                guardaImagenSolicitud(int.Parse(sIdExpediente), Urecomendacion, "Recomendacion");
            if (Documentacion_7.Checked)
                guardaImagenSolicitud(int.Parse(sIdExpediente), Upolicia, "Policia");
            if (Documentacion_8.Checked)
                guardaImagenSolicitud(int.Parse(sIdExpediente), Ucurp, "Curp");
            

    }

     private void CargaCombos()
     {
         try
         {
             using (BussinesCosea.CoseaDirectos c = new BussinesCosea.CoseaDirectos(cadena))
             {
                 
                 Puesto.DataSource = c.ObtenPuestos();
                 Puesto.DataTextField = "Puesto1";
                 Puesto.DataValueField = "IdPuesto";
                 Puesto.DataBind();

                 Contrato.DataSource = c.ObtenTipoContrato();
                 Contrato.DataTextField = "Descripcion";
                 Contrato.DataValueField = "IdTipoContrato";
                 Contrato.DataBind();
             }
         }
         catch (Exception ex)
         {
             Response.Redirect("Error.aspx?error=" + ex.Message);
             //throw;
         }
     }
     private void Consulta()
     {
         Nombre.Text = solicitud.Nombre1;
         Paterno.Text = solicitud.Paterno;
         Materno.Text = solicitud.Materno;
         Imss.Text = solicitud.Imss;
         Rfc.Text = solicitud.RFC;
         FechaNacimiento.Text = solicitud.FechaNacimiento.ToString();
         Edad.Text = solicitud.Edad.ToString();
         LugarNacimiento.Text = solicitud.LugarNacimiento;
         Estado.SelectedItem.Text = solicitud.EstadoDondeVive;
         Sexo.Text = solicitud.Sexo;
         EstadoCivil.Text = solicitud.EstadoCivil;
         Padre.Text = solicitud.Padre;
         Madre.Text = solicitud.Madre;
         Escolaridad.Text = solicitud.EscolaridadMaxima;
         Direccion.Text = solicitud.Domicilio;
         Tel1.Text = solicitud.Telefono;
         Tel2.Text = solicitud.Telefono2;
         Celular.Text = solicitud.Celular;
         Recados.Text = solicitud.TelefonoRecados;
         Cliente.Text = ordenSrv.Cliente.RazonSocial;
         LugarTrabajo.Text = ordenSrv.LugardeTrabajo;
         Colonia.Text = ordenSrv.ColoniaLugarTrabajo;
         CP.Text = ordenSrv.Cliente.Cp;
         Telefono1.Text = ordenSrv.Cliente.Telefono1;
         Puesto.Text = ordenSrv.Puesto.IdPuesto.ToString();
         periodoPago.Text = ordenSrv.PeriodoSalario;
         Contrato.Text = ordenSrv.TipoContrato.IdTipoContrato.ToString();
      
     }
    
   
     protected void btnGuardar_Click(object sender, EventArgs e)
     {
         guardar();
     }
}